/*
 *  State.h
 *  West World
 *
 *  Created by Jacopo Musso on 24/03/10.
 *  Copyright 2010 IapoSoft. All rights reserved.
 *
 */

#ifndef STATE_H
#define STATE_H

#include "Telegram.h"

/*
	Template class to create State. Type is the type of the state's owner.
*/
template <class Type>
class State  
{
public:
	virtual ~State(){}

	virtual void Enter(Type*) = 0;

	virtual void Execute(Type*) = 0;

	virtual void Exit(Type*) = 0;

	virtual bool OnMessage(Type* , const Telegram&) = 0;
};


#endif
